#ifndef __CAMERACOREEXTCOMMON_H__
#define __CAMERACOREEXTCOMMON_H__
/**
 * @file CameraCoreExtCommon.h
 *
 * @brief This file contains the client specific declarations for
 *  core camera interfaces
 *
 * Copyright (c) 2011 Qualcomm Technologies, Inc.
 * All Rights Reserved.
 * Confidential and Proprietary - Qualcomm Technologies, Inc.
 *
 */

/* ===========================================================================
                        INCLUDE FILES FOR MODULE
=========================================================================== */
#include "CameraTypes.h"

#include "CameraResult.h"


/* ===========================================================================
                        DATA DECLARATIONS
=========================================================================== */
/* ---------------------------------------------------------------------------
** Constants / Defines
** ------------------------------------------------------------------------ */

/* ---------------------------------------------------------------------------
 ** Type Definitions
 ** ------------------------------------------------------------------------ */
/**
 * This defines the function signature that the client must implement in order
 * to be called back with data path events.
 *
 * @param[in] pClientData Pointer to client defined data.
 *
 * @param[in] uidEvent The message or event the driver is communicating.
 *
 * @param[in] nEventDataLen Length in bytes of the payload data
 *                          associated with this event.
 *
 * @param[in] pEventData Payload Data associated with the event. The client
 *                       should cast this with appropriate message data
 *                       structure.
 *
 * @return CAMERA_SUCCESS if successful.
 */
typedef CameraResult (* DataPathCallbackType)
(
    void* pClientData,
    uint32 uidEvent,
    int nEventDataLen,
    void* pEventData
);


/// This structure contains information that describes the data path event
/// notifier handle as a DataPathCallbackType.
typedef struct
{
    /// This is a pointer to the client's callback function
    DataPathCallbackType pfnCallback;

    /// This is a pointer to private client data to be passed back in
    /// the callback function.
    void* pClientData;
} DataPathCallbackInfoType;

/* ---------------------------------------------------------------------------
 ** Interface Declarations
 ** ------------------------------------------------------------------------ */

#endif // __CAMERACOREEXTCOMMON_H__
